home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 4_0 / LOC / ZLOCDOC.C < prev    next >
Text File  |  1991-10-17  |  3KB  |  154 lines

  1. /* zLOCDoc.c -- document methods */
  2. /* Created 10/17/91 4:10 PM by AppMaker */
  3.  
  4. /*    We recommend that you not modify this module and instead modify        */
  5. /*    its subclass, LOCDoc.  The 'z' prefix on this module marks            */
  6. /*    a module which is likely to be regenerated by AppMaker after you    */
  7. /*    make changes to the user interface.  The modules without the 'z'    */
  8. /*    prefix will not be regenerated by AppMaker unless you delete them.    */
  9. /*    Using a separate subclass to override the AppMaker-generated code    */
  10. /*    lets you regenerate code without losing your hand-coded changes.    */ 
  11.  
  12. #include <Commands.h>
  13. #include <Global.h>
  14. #include <CApplication.h>
  15. #include <CBartender.h>
  16. #include <CDataFile.h>
  17. #include <CDecorator.h>
  18. #include <CDesktop.h>
  19. #include <CError.h>
  20. #include <TBUtilities.h>
  21. #include "LOCCounter.h"
  22. #include "zLOCDoc.h"
  23.  
  24. extern    CApplication    *gApplication;    /* The application */
  25. extern    CBartender        *gBartender;    /* The menu handling object */
  26. extern    CDecorator        *gDecorator;    /* Window dressing object */
  27. extern    CBureaucrat        *gGopher;        /* The current boss in the chain of command */
  28. extern    CError            *gError;        /* The error handling object */
  29. extern    OSType             gSignature;    /* The application's signature */
  30.  
  31. /*----------*/
  32. void    ZLOCDoc::ILOCDoc    (
  33.                          CApplication    *aSupervisor,
  34.                          Boolean        printable)
  35. {
  36.     CDocument::IDocument (aSupervisor, printable);
  37.     itsLOCCounter = NULL;
  38.     
  39. } /* ILOCDoc */
  40.  
  41. /*----------*/
  42. Boolean    ZLOCDoc::ReadData        (Handle        *theData)
  43. {
  44.     return (FALSE);
  45.  
  46. } /* ReadData */
  47.  
  48. /*----------*/
  49. void    ZLOCDoc::WriteData    (void)
  50. {
  51.     /* application-specific write data to itsFile */
  52. } /* WriteData */
  53.  
  54. /*----------*/
  55. void    ZLOCDoc::NewFile        (void)
  56. {
  57.     BuildWindows ();
  58.     itsWindow->Select ();
  59.  
  60. } /* NewFile */
  61.  
  62. /*----------*/
  63. void     ZLOCDoc::OpenFile        (SFReply    *macSFReply)
  64. {
  65.     CDataFile        *theFile;
  66.     Handle            theData;
  67.     Str63            theName;
  68.     OSErr            theError;
  69.  
  70.     theFile = new (CDataFile);
  71.     theFile->IDataFile ();
  72.     theFile->SFSpecify (macSFReply);
  73.     itsFile = theFile;
  74.     theError = theFile->Open (fsRdWrPerm);
  75.     if (!gError->CheckOSError (theError)) {
  76.         Dispose ();
  77.         return;
  78.     }
  79.  
  80.     if (!ReadData (&theData)) {
  81.         Dispose ();
  82.         return;
  83.     }
  84.  
  85.     BuildWindows ();
  86.     DisposHandle (theData);
  87.     itsFile->GetName (theName);
  88.     itsWindow->SetTitle (theName);
  89.     itsWindow->Select ();
  90.  
  91. } /* OpenFile */
  92.  
  93. /*----------*/
  94. void    ZLOCDoc::BuildWindows    (void)
  95. {
  96.     itsLOCCounter = new (CLOCCounter);
  97.     itsLOCCounter->ILOCCounter (this);
  98.     itsMainPane = itsLOCCounter->itsMainPane;
  99.     itsWindow = itsLOCCounter;
  100.     
  101.     } /* BuildWindows */
  102.  
  103. /*----------*/
  104. Boolean    ZLOCDoc::DoSave        (void)
  105. {
  106.     if (itsFile == NULL) {
  107.         return (DoSaveFileAs ());
  108.     } else {
  109.         WriteData ();
  110.         dirty = FALSE;
  111.         gBartender->DisableCmd (cmdSave);
  112.         return (TRUE);
  113.     }
  114. } /* DoSave */
  115.  
  116. /*----------*/
  117. Boolean    ZLOCDoc::DoSaveAs        (SFReply    *macSFReply)
  118. {
  119.     CDataFile        *theFile;
  120.  
  121.     if (itsFile != NULL) {
  122.         itsFile->Dispose ();
  123.     }
  124.  
  125.     theFile = new (CDataFile);
  126.     theFile->IDataFile ();
  127.     theFile->SFSpecify (macSFReply);
  128.     itsFile = theFile;
  129.  
  130.     theFile->CreateNew (gSignature, 'TEXT');
  131.     theFile->Open (fsRdWrPerm);
  132.  
  133.     itsWindow->SetTitle (macSFReply->fName);
  134.  
  135.     return (DoSave ());
  136.  
  137. } /* DoSaveAs */
  138.  
  139. /*----------*/
  140. void ZLOCDoc::DoCommand (long        theCommand)
  141. {
  142.     switch (theCommand) {
  143.         case cmdClose:
  144.                 CloseWind (itsWindow);
  145.             break;
  146.         default:
  147.                 inherited::DoCommand (theCommand);
  148.             break;
  149.     } /* switch */
  150.  
  151. } /* DoCommand */
  152.  
  153. /* zLOCDoc.c */
  154.